﻿using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;

namespace CryptFighter
{
    // Clase base para barras de vida, hereda de Sprite
    class BarraVida
    {
        // Se define la constante para el Sprite de la barra de vida
        private string BAR_ASSETNAME = "Vida/healthbar";
        int START_POSITION_X;
        int START_POSITION_Y;

        public Texture2D TexturaBarra;
        private Texture2D CubiertaBarra;

        SpriteEffects Espejo;

        public Vector2 PosicionInicial(int numBarra, Viewport viewport)
        {
            if (numBarra == 1)
            {
                START_POSITION_X = 100;
                START_POSITION_Y = 25;
            }
            else
            {
                START_POSITION_X = viewport.Width - TexturaBarra.Width - 100;
                START_POSITION_Y = 25;
            }
            Posicion.X = START_POSITION_X;
            Posicion.Y = START_POSITION_Y;
            return Posicion;
        } Vector2 Posicion;

        // Vida del personaje en valor numerico
        public float Cantidad = 200;

        public string GetNombreBarra
        {
            get { return BAR_ASSETNAME; }
            set { BAR_ASSETNAME = value; }
        }

        public void Reset()
        {
            Cantidad = 200;
        }

        public void Flip(int IndicePersonaje)
        {
            if (IndicePersonaje == 2)
                Espejo = SpriteEffects.FlipHorizontally;
            else
                Espejo = SpriteEffects.None;
        }

        // La siguiente función carga el contenido gráfico del personaje
        public void LoadContent(ContentManager mContentManager)
        {
            TexturaBarra = mContentManager.Load<Texture2D>(BAR_ASSETNAME);
            CubiertaBarra = mContentManager.Load<Texture2D>("Vida/healthcover");
        }

        // Función para dibujar la barra de vida del personaje,
        // se llama a esta función desde el juego, "GameplayScreen"
        public void DrawHealth(SpriteBatch mSpriteBatch)
        {
            mSpriteBatch.Draw(
                TexturaBarra,
                new Rectangle(START_POSITION_X, START_POSITION_Y, TexturaBarra.Width, 44),
                new Rectangle(0, 45, TexturaBarra.Width, 44),
                Color.Red,
                0.0f,
                new Vector2(0, 0),
                Espejo,
                1);

            //Draw the current health level based on the current Health
            mSpriteBatch.Draw(
                TexturaBarra,
                new Rectangle(START_POSITION_X, START_POSITION_Y, (int)(TexturaBarra.Width * ((double)Cantidad / 100)), 44),
                new Rectangle(0, 45, TexturaBarra.Width, 44),
                Color.Green,
                0.0f,
                new Vector2(0, 0),
                Espejo,
                1);

            //Draw the box around the health bar
            mSpriteBatch.Draw(
                TexturaBarra,
                new Rectangle(START_POSITION_X, START_POSITION_Y, TexturaBarra.Width, 44),
                new Rectangle(0, 0, TexturaBarra.Width, 44),
                Color.White,
                0.0f,
                new Vector2(0, 0),
                Espejo,
                1);


            mSpriteBatch.Draw(
                CubiertaBarra,
                new Rectangle(START_POSITION_X - 5, START_POSITION_Y - 5, CubiertaBarra.Width, 85),
                new Rectangle(0, 0, CubiertaBarra.Width, CubiertaBarra.Height),
                Color.White,
                0.0f,
                new Vector2(0, 0),
                Espejo,
                1);


        }
    }
}
